home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 001-025 / disk_008 / src / qsort.c < prev    next >
C/C++ Source or Header  |  1992-05-06  |  594b  |  27 lines

  1. qsort( v, n, size, comp)
  2. char *v;
  3. int n;
  4. int size;
  5. int (*comp)();
  6.    {
  7.    int gap, i, j, x, cnt;
  8.    char temp, *p1, *p2;
  9.  
  10.    cnt = 0;
  11.    for (gap=n/2; gap > 0 ; gap /= 2)
  12.       for (i=gap; i<n; i++)
  13.          for (j = i-gap; j >= 0; j -= gap)
  14.             if ( (*comp) ( (p1=v+j*size), (p2=v+(j+gap)*size) ) < 0)
  15.                {
  16.                cnt++;
  17.                /* exchange them */
  18.                for (x=0; x<size; x++)
  19.                   {
  20.                   temp = *p1;
  21.                   *p1++ = *p2;
  22.                   *p2++ = temp;
  23.                   }
  24.                }
  25.    return(cnt);
  26.    }
  27.